package org.lwd.datalink.service;

import org.lwd.datalink.domain.task.TaskShadowInfo;

/**
 * 影子任务 Service 接口
 *
 * @Author: weidong.lin
 * @Date: create in 2024/4/2 14:06
 */
public interface TaskShadowService {


    /**
     * 根据任务ID获取状态为EXECUTING的影子任务
     *
     * @param taskId
     * @return
     */
    TaskShadowInfo getExecutingTaskShadow(Long taskId);

    /**
     * 根据任务ID获取状态为INIT的影子任务
     *
     * @param taskId
     * @return
     */
    TaskShadowInfo takeOneTaskShadow(Long taskId);

    /**
     * 启动影子任务
     *
     * @param state
     * @param id
     */
    void startTaskShadow(TaskShadowInfo taskShadowInfo);

    /**
     * 完成影子任务
     *
     * @param state
     * @param id
     */
    void completeTaskShadow(TaskShadowInfo taskShadowInfo);

    /**
     * 丢弃影子任务
     *
     * @param id
     * @return
     */
    boolean discardTaskShadow(Long id);
}
